A virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system (e.g., a server, a mainframe computer, etc.). The actual physical computer system is typically referred to as a “host machine,” and the operating system (OS) of the host machine is typically referred to as the “host operating system.” Typically, software on the host machine known as a “hypervisor” (or a “virtual machine monitor”) manages the execution of one or more virtual machines or “guests”, providing a variety of functions such as virtualizing and allocating resources, context switching among virtual machines, etc. The operating system (OS) of the virtual machine is typically referred to as the “guest operating system.” The hypervisor can configure a particular function with special privileges to be executed on behalf of a virtual machine so that packets may be transferred between virtual machines without requiring an exit to the hypervisor. This is referred to as a “VM function.”
In multiple host environments, a running virtual machine or group of virtual machines can be moved from one host to another without disconnecting or terminating the virtual machine. Memory, storage, and network connectivity of the virtual machines can be transferred from the source host machine to a destination host machine. The process is referred to as “live migration.”